<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03-变量</title>

    <!--
        javaScripts的变量类型:
            数值类型：    number
            字符串类型：  string
            对象类型：    object
            布尔类型：    boolean
            函数类型：    function
        JavaScript里特殊的值:
            undefined    未定义，所有js变量未赋予初始值时，默认值都是undefine
            null         空值
            NaN          全称是：Not a Number 非数字、非数值
        JavaScript的定义变量的格式:
            var 变量名;
            var 变量名 = 值;
            var 变量名 = 值, 变量名 = 值, ...;

        还可以使用const和let来定义变量
            var:定义的变量可以修改，如果不初始化会输出undefined，不会报错。
            const:定义的变量不可以修改，而且必须初始化。
            let:let是块级作用域，函数内部使用let定义后，对函数外部无影响。
    -->

    <script type="text/javascript">
        /*/!*----------------var----------------*!/
        var a = 1;
        // var a;//不会报错
        console.log('函数外var定义a：' + a);//可以输出a=1
        function change(){
            a = 4;
            console.log('函数内var定义a：' + a);//可以输出a=4
        }
        change();
        console.log('函数调用后var定义a为函数内部修改值：' + a);//可以输出a=4

        /!*----------------const----------------*!/
        const b = 2;//正确
        // const b;//错误，必须初始化
        console.log('函数外const定义b：' + b);//有输出值
        // b = 5;
        // console.log('函数外修改const定义b：' + b);//无法输出

        /!*----------------let----------------*!/
        let c = 3;
        console.log('函数外let定义c：' + c);//输出c=3
        function change(){
            let c = 6;
            console.log('函数内let定义c：' + c);//输出c=6
        }
        change();
        console.log('函数调用后let定义c不受函数内部定义影响：' + c);//输出c=3*/


        var i;
        // alert(i); // undefined
        i = 12;
        // typeof()是JavaScript语言提供的一个函数。
        // 它可以取变量的数据类型返回
        // alert( typeof(i) ); // number
        i = "abc";
        // alert( typeof(i) ); // String
        var a = 12;
        var b = "abc";
        alert( a * b ); // NaN是非数字，非数值。
    </script>
</head>
<body>

</body>
</html>